#include <iostream>
using namespace std;

/*
	友元类：某个类整体作为另外一个类的友元
	狗这个类：所有的成员函数都可以访问/修改猫的私有成员
*/

class Dog;

class Cat
{
public:
	Cat(string _name,int _age)
	{
		name=_name;
		age=_age;
	}
	//声明狗这个类是猫的友元类(狗是猫的好朋友)
	friend class Dog;
private:
	int age;
	string name;
};

class Dog
{
public:
	//狗里面的成员方法访问猫的私有成员
	void showCat(Cat &other)
	{
		cout<<"狗可以查看猫的姓名: "<<other.name<<endl;
		cout<<"狗可以查看猫的年龄: "<<other.age<<endl;
	}
	//狗里面的成员方法修改猫的私有成员
	void setCat(Cat &other,string newname,int newage)
	{
		other.name=newname;
		other.age=newage;
	}
};

int main()
{
	Cat c1("旺财",5);
	Dog d1;
	//狗里面的成员方法访问猫的私有成员
	d1.showCat(c1);	
	//狗里面的成员方法修改猫的私有成员
	d1.setCat(c1,"来福",6);
	d1.showCat(c1);
}